package com.cskaoyan.javase.oop2._1extends._10final._3variable._3static;
/**
 * 访问类的全局常量,某些情况下,不会触发类的初始化
 *
 * 加载-->链接-->初始化,初始化是类加载的第三个步骤
 * 类加载的初始化这个步骤,用于执行静态代码块,执行静态成员变量的显式赋值
 *
 * 哪些场景呢?
 * 访问那些使用字面值常量赋值的全局常量,不会触发类的初始化,这个类的静态代码块不会执行
 * 原因:
 *      字面值常量赋值的全局常量,相当于字面值取个名字,本质上还是字面值
 *      所以无需类加载,可以直接访问这个字面值
 *      节省一次类加载的资源耗费
 *
 * @since 11:18
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo2 {
    public static void main(String[] args) {
        // System.out.println(A.num);
        // System.out.println(A.num2);
        // System.out.println(A.num3);
        System.out.println(A.num4);
    }
}
class A{
    final static int num = 100;
    final static double num2 = 100;
    final static String num3 = "abc";
    final static String num4 = new String("abc");
    static {
        System.out.println("A初始化了!");
    }
}